Embodiments of present invention relate generally to the communication of data in distributed systems, and more particularly to facilitating the communications for data distribution.
Some distributed systems enable the distribution of data and associated information over a network, coupling a client and a server. Examples of the distributed data include database data, file data, or any data copies that may be shared across the distributed system. Some examples of the associated information include communicating requests from the client to read, write, update, or replicate the distributed data on the server and appropriate responses from the server to the client. These reads, writes, updates, and replication may be employed by a variety of distributed systems including distributed file and database systems.
Many distributed systems involve objects that may consist of smaller chunks of data that may be individually transferred over a network between a client and a server or vice versa. Such a distributed system is known as a distributed object system. Commonly, objects are referred to as data objects (e.g., of a file) that may be created on a server for distribution over a network to a client running an application. Associated with each object in a distributed object system may be some metadata that may contain information including an object's owner, date/time of creation and last modification, and object size. Servers provide a mechanism by which clients can read an object's metadata. In this manner, the objects may be first developed and then maintained by a party different than the party that developed the object. Optionally, a copy of the object may be replicated to another server, such as at a replica site holding a replica copy of the object.
However, when a client wants the most up-to-date version of an object, the client first discards the previously cached object data and then fetches the object data again if the application requires, communicating redundant object data. Upon opening an object, for example, the client typically first reads the object's metadata from the server to perform a consistency check to verify that the user is getting an up-to-date version of the object. When a client determines that an object has been changed, the client deletes all the cached data that the client has for that object. If, for instance, the client detects that the object's modification time does not match the modification time of the cached data for that object in its cache, then the client removes all that cached data and gets new data from the server when the application attempts to read it.
Sometimes distributed object systems may be scaled to a network with a larger number of clients. In these larger networks, the number of requests and the amount of data transferred between clients and the servers increases. Any increase in client communication with the server further deteriorates the performance of the server because more and more object data may be requested. As a result, the performance of the distributed object system and the network in terms of efficient usage of the network resources goes down because the network may get heavily loaded. In another scenario, the network distance between clients and servers may increase. In this scenario, the network latency between client and server increases and the time it takes for a client to read or write an object will correspondingly increase.
In most distributed object systems that support replication, when a copy of an object changes at a server, the entire new version of the object replaces a replica copy of the object at each replica site, involving distribution of the entire object for causing version updates. Furthermore, when the client updates the object and since the server normally bases replica updates on client updates, replica updates may similarly involve copying of the entire object.
Thus, there is a continuing need for better ways to communicate data in distributed systems, especially in communications associated with data distribution.